package org.hcf.api.base;

import lombok.Data;

public class Const {
    @Data
    public static class API {
        /** 导入单个账号 */
        public static String ACCOUNT_IMPORT = "/v4/im_open_login_svc/account_import";

        /** 导入多个账号 */
        public static String ACCOUNTS_IMPORT = "/v4/im_open_login_svc/multiaccount_import";

        /** 删除账号 */
        public static String ACCOUNT_DEL = "/v4/im_open_login_svc/account_delete";

        /** 查询账号 */
        public static String ACCOUNT_SEARCH = "/v4/im_open_login_svc/account_check";

        /** 失效账号登录状态 */
        public static String KICK = "/v4/im_open_login_svc/kick";

        /** 查询账号在线状态 */
        public static String ONLINE_STATUS = "/v4/openim/query_online_status";


        /** 单发单聊消息 */
        public static String FRIEND_SEND_MSG = "/v4/openim/sendmsg";

        /** 批量发单聊消息 */
        public static String FRIEND_SEND_MSG_BATCH = "/v4/openim/batchsendmsg";

        /** 导入单聊消息 */
        public static String FRIEND_MSG_IMPORT = "/v4/openim/importmsg";

        /** 查询单聊消息 */
        public static String FRIEND_MSG_ROAM = "/v4/openim/admin_getroammsg";

        /** 撤回单聊消息 */
        public static String FRIEND_MSG_DRAW = "/v4/openim/admin_msgwithdraw";

        /** 设置单聊消息已读 */
        public static String FRIEND_MSG_READ = "/v4/openim/admin_set_msg_read";

        /** 查询单聊未读消息计数 */
        public static String FRIEND_MSG_UNREAD_NUM = "/v4/openim/get_c2c_unread_msg_num";

        /** 修改单聊历史消息 */
        public static String MODIFY_C2C_MSG = "/v4/openim/modify_c2c_msg";

        /** 设置资料 */
        public static String PORTRAIT_SET = "/v4/profile/portrait_set";

        /** 拉取资料 */
        public static String PORTRAIT_GET = "/v4/profile/portrait_get";

        /** 添加好友 */
        public static String FRIEND_ADD = "/v4/sns/friend_add";

        /** 导入好友 */
        public static String FRIEND_IMPORT = "/v4/sns/friend_import";

        /** 更新好友 */
        public static String FRIEND_UPDATE = "/v4/sns/friend_update";

        /** 删除好友 */
        public static String FRIEND_DELETE = "/v4/sns/friend_delete";

        /** 删除所有好友 */
        public static String FRIEND_DEL_ALL = "/v4/sns/friend_delete_all";

        /** 校验好友 */
        public static String FRIEND_CHECK = "/v4/sns/friend_check";

        /** 拉取好友 */
        public static String FRIEND_GET = "/v4/sns/friend_get";

        /** 拉取指定好友 */
        public static String FRIEND_GET_LIST = "/v4/sns/friend_get_list";

        /** 添加黑名单 */
        public static String BLACK_ADD = "/v4/sns/black_list_add";

        /** 删除黑名单 */
        public static String BLACK_DEL = "/v4/sns/black_list_delete";

        /** 拉取黑名单 */
        public static String BLACK_GET = "/v4/sns/black_list_get";

        /** 校验黑名单 */
        public static String BLACK_CHECK = "/v4/sns/black_list_check";

        /** 添加分组 */
        public static String GROUP_ADD = "/v4/sns/group_add";

        /** 删除分组 */
        public static String GROUP_DEL = "/v4/sns/group_delete";

        /** 拉取分组 */
        public static String GROUP_GET = "/v4/sns/group_get";


        /** 拉取会话列表 */
        public static String GET_LIST = "/v4/recentcontact/get_list";

        /** 删除单个会话 */
        public static String DEL = "/v4/recentcontact/delete";

        /** 创建会话分组数据 */
        public static String CREATE_CONTACT_GROUP = "/v4/recentcontact/create_contact_group";

        /** 删除会话分组数据 */
        public static String DEL_CONTACT_GROUP = "/v4/recentcontact/del_contact_group";

        /** 更新会话分组数据 */
        public static String UPDATE_CONTACT_GROUP = "/v4/recentcontact/update_contact_group";

        /** 搜索会话分组标记数据 */
        public static String SEARCH_CONTACT_GROUP = "/v4/recentcontact/search_contact_group";

        /** 创建或更新会话标记数据 */
        public static String MARK_CONTACT = "/v4/recentcontact/mark_contact";

        /** 拉取会话分组标记数据 */
        public static String GET_CONTACT_GROUP = "/v4/recentcontact/get_contact_group";

        /** 获取 App 中的所有群组 */
        public static String GET_APPID_GROUP_LIST = "/v4/group_open_http_svc/get_appid_group_list";

        /** 创建群组 */
        public static String GROUP_CREATE = "/v4/group_open_http_svc/create_group";

        /** 获取群详细资料 */
        public static String GROUP_INFO_GET = "/v4/group_open_http_svc/get_group_info";

        /** 获取群成员详细资料 */
        public static String GROUP_MEMBERS = "/v4/group_open_http_svc/get_group_member_info";

        /** 修改群基础资料 */
        public static String GROUP_MODIFY_BASE_INFO = "/v4/group_open_http_svc/modify_group_base_info";

        /** 增加群成员 */
        public static String GROUP_MEMBER_ADD = "/v4/group_open_http_svc/add_group_member";

        /** 删除群成员 */
        public static String GROUP_MEMBER_DEL = "/v4/group_open_http_svc/delete_group_member";

        /** 修改群成员资料 */
        public static String GROUP_MEMBER_INFO_MODIFY = "/v4/group_open_http_svc/modify_group_member_info";

        /** 解散群组 */
        public static String GROUP_DESTROY = "/v4/group_open_http_svc/destroy_group ";

        /** 获取用户所加入的群组 */
        public static String USER_IN_GROUP_LIST = "/v4/group_open_http_svc/get_joined_group_list";

        /** 查询用户在群组中的身份 */
        public static String USER_IN_GROUP_ROLE = "/v4/group_open_http_svc/get_role_in_group";

        /** 批量禁言和取消禁言 */
        public static String FORBID_SEND_MSG = "/v4/group_open_http_svc/forbid_send_msg";

        /** 获取被禁言群成员列表 */
        public static String GROUP_MEMBER_NO_SPEAK = "/v4/group_open_http_svc/get_group_muted_account";

        /** 在群组中发送普通消息 */
        public static String GROUP_SEND_MSG = "/v4/group_open_http_svc/send_group_msg";

        /** 在群组中发送系统通知 */
        public static String GROUP_SEND_SYSTEM_NOTICE = "/v4/group_open_http_svc/send_group_system_notification";

        /** 撤回群消息 */
        public static String GROUP_MSG_RECALL = "/v4/group_open_http_svc/group_msg_recall";

        /** 转让群主 */
        public static String GROUP_OWNER_CHANGE = "/v4/group_open_http_svc/change_group_owner";

        /** 导入群基础资料 */
        public static String GROUP_IMPORT = "/v4/group_open_http_svc/import_group";

        /** 导入群消息 */
        public static String GROUP_MSG_IMPORT = "/v4/group_open_http_svc/import_group_msg ";

        /** 导入群成员 */
        public static String GROUP_MEMBER_IMPORT = "/v4/group_open_http_svc/import_group_member";

        /** 设置成员未读消息计数 */
        public static String GROUP_MEMBER_UNREAD_NUM = "/v4/group_open_http_svc/set_unread_msg_num";

        /** 删除指定用户发送的消息 */
        public static String GROUP_SENDER_MSG_DEL = "/v4/group_open_http_svc/delete_group_msg_by_sender";

        /** 拉取群历史消息 */
        public static String GROUP_MSG_GET_SIMPLE = "/v4/group_open_http_svc/group_msg_get_simple";

        /** 获取直播群在线人数 */
        public static String GET_ONLINE_MEMBER_NUM = "/v4/group_open_http_svc/get_online_member_num";

        /** 获取直播群在线成员列表 */
        public static String GET_MEMBER = "/v4/group_open_avchatroom_http_svc/get_members";

        /** 设置直播群成员标记 */
        public static String USER_INFO_MODIFY = "/v4/group_open_avchatroom_http_svc/modify_user_info";

        /** 获取群自定义属性 */
        public static String GROUP_ATTR_GET = "/v4/group_open_attr_http_svc/get_group_attr";

        /** 获取封禁群成员列表 */
        public static String GROUP_MEMBER_BAN_GET = "/v4/group_open_http_svc/get_group_ban_member";

        /** 群成员封禁 */
        public static String GROUP_MEMBER_BAN = "/v4/group_open_http_svc/ban_group_member";

        /** 群成员解封 */
        public static String GROUP_MEMBER_UNBAN = "/v4/group_open_http_svc/unban_group_member";

        /** 修改群自定义属性 */
        public static String GROUP_ATTR_MODIFY = "/v4/group_open_http_svc/modify_group_attr";

        /** 清空群自定义属性 */
        public static String GROUP_ATTR_CLEAR = "/v4/group_open_http_svc/clear_group_attr";

        /** 重置群自定义属性 */
        public static String SEG_GROUP_ATTR = "/v4/group_open_http_svc/set_group_attr";

        /** 删除群自定义属性 */
        public static String DEL_GROUP_ATTR = "/v4/group_open_http_svc/delete_group_attr";

        /** 修改群聊历史消息 */
        public static String MODIFY_GROUP_MSG = "/v4/openim/modify_group_msg";

        /** 直播群广播消息 */
        public static String SEND_BROADCAST_MSG = "/v4/group_open_http_svc/send_broadcast_msg";

        /** 获取群计数器 */
        public static String GET_GROUP_COUNT = "/v4/group_open_http_svc/get_group_counter";

        /** 更新群计数器 */
        public static String UPDATE_GROUP_COUNT = "/v4/group_open_http_svc/update_group_counter";

        /** 删除群计数器 */
        public static String DEL_GROUP_COUNT = "/v4/group_open_http_svc/delete_group_counter";

        /** 设置全局禁言 */
        public static String SET_NO_SPEAKING = "/v4/openconfigsvr/setnospeaking";


        /** 查询全局禁言 */
        public static String GET_NO_SPEAKING = "/v4/openconfigsvr/getnospeaking";


        /** 拉取运营数据 */
        public static String GET_APP_INFO = "/v4/openconfigsvr/getappinfo";

        /** 下载消息记录 */
        public static String GET_HISTORY = "/v4/open_msg_svc/get_history";

        /** 获取服务器 IP 地址 */
        public static String GET_IP_LIST = "/v4/ConfigSvc/GetIPList";

        /** 聊天文件封禁 */
        public static String FORBID_ILLEGAL_OBJECT = "/v4/im_cos_msg/forbid_illegal_object";

        /** 聊天文件解封 */
        public static String ALLOW_BANNED_OBJECT = "/v4/im_cos_msg/allow_banned_object";

        /** 聊天文件签名 */
        public static String COS_SIG = "/v4/im_cos_msg/get_cos_sig";

    }

    @Data
    public static class CMD {
        /** 接口超频告警回调*/
        public static String OVER_LIMIT = "Alert.RequestOverLimit";

        /** 状态变更回调 */
        public static String STATE_CHANGE = "State.StateChange";

        /** 更新资料之后回调 */
        public static String PORTRAIT_SET = "Profile.CallbackPortraitSet";

        /** 添加好友之前回调*/
        public static String FRIEND_ADD_BEFORE_REQ = "Sns.CallbackPrevFriendAdd";

        /** 添加好友回应之前回调 */
        public static String FRIEND_ADD_BEFORE_RES = "Sns.CallbackPrevFriendResponse";

        /** 添加好友之后回调 */
        public static String FRIEND_ADD_AFTER = "Sns.CallbackFriendAdd";

        /** 删除好友之后回调 */
        public static String FRIEND_DEL_AFTER = "Sns.CallbackFriendDelete";

        /** 添加黑名单之后回调 */
        public static String BLACK_ADD_AFTER = "Sns.CallbackBlackListAdd";

        /** 删除黑名单之后回调 */
        public static String BLACK_DEL_AFTER = "Sns.CallbackBlackListDelete";

        /** 发单聊消息之前回调 */
        public static String FRIEND_SEND_MSG_BEFORE = "C2C.CallbackBeforeSendMsg";

        /** 发单聊消息之后回调 */
        public static String FRIEND_SEND_MSG_AFTER = "C2C.CallbackAfterSendMsg";

        /** 单聊消息已读上报后回调 */
        public static String FRIEND_MSG_REPORT = "C2C.CallbackAfterMsgReport";

        /** 单聊消息撤回后回调 */
        public static String FRIEND_MSG_DRAW = "C2C.CallbackAfterMsgWithDraw";

        /** 创建群组之前回调 */
        public static String GROUP_CREATE_BEFORE = "Group.CallbackBeforeCreateGroup";

        /** 创建群组之后回调 */
        public static String GROUP_CREATE_AFTER = "Group.CallbackAfterCreateGroup";

        /** 申请入群之前回调 */
        public static String GROUP_APPLY_BEFORE = "Group.CallbackBeforeApplyJoinGroup";

        /** 拉人入群之前回调 */
        public static String GROUP_INVITE_JOIN_BEFORE = "Group.CallbackBeforeInviteJoinGroup";

        /** 新成员入群之后回调 */
        public static String GROUP_MEMBER_JOIN_AFTER = "Group.CallbackAfterNewMemberJoin";

        /** 群成员离开之后回调 */
        public static String GROUP_MEMBER_EXIT_AFTER = "Group.CallbackAfterMemberExit";

        /** 群内发言之前回调 */
        public static String GROUP_SEND_MSG_BEFORE = "Group.CallbackBeforeSendMsg";

        /** 群内发言之后回调 */
        public static String GROUP_SEND_MSG_AFTER = "Group.CallbackAfterSendMsg";

        /** 群组满员之后回调 */
        public static String GROUP_MEMBER_FULL = "Group.CallbackAfterGroupFull";

        /** 群组解散之后回调 */
        public static String GROUP_DESTROY_AFTER = "Group.CallbackAfterGroupDestroyed";

        /** 群组资料变动之后回调 */
        public static String GROUP_INFO_CHANGE_AFTER = "Group.CallbackAfterGroupInfoChanged";

        /** 直播群成员在线状态回调 */
        public static String GROUP_MEMBER_STATE = "Group.CallbackOnMemberStateChange";

        /** 发送群聊消息异常回调*/
        public static String GROUP_SEND_MSG_EXCIPTION = "Group.CallbackSendMsgException";

        /** 创建话题之前回调 */
        public static String GROUP_CREATE_TOPIC_BEFORE = "Group.CallbackBeforeCreateTopic";

        /**   创建话题之后回调 */
        public static String GROUP_CREATE_TOPIC_AFTER = "Group.CallbackAfterCreateTopic";

        /** 解散话题之后回调 */
        public static String GROUP_DESTROY_TOPIC_AFTER = "Group.CallbackAfterTopicDestroyed";

        /** 话题资料修改之后回调 */
        public static String GROUP_UPDATE_TOPIC_AFTER = "Group.CallbackAfterTopicInfoChanged";

        /** 群成员资料变更后回调 */
        public static String GROUP_MEMBER_INFO_CHANGE_AFTER = "Group.CallbackAfterMemberFieldChanged";

        /** 群自定义属性变更后回调 */
        public static String GROUP_ATTR_CHANGE_AFTER = "Group.CallbackAfterGroupAttrChanged";

        /** 已读回执后回调 */
        public static String GROUP_MSG_RECEIPT_AFTER = "Group.CallbackAfterReadReceipt";

        /** 转让群主后回调 */
        public static String GROUP_OWNER_CHANGE_AFTER = "Group.CallbackAfterChangeGroupOwner";

        /** 审核结果回调 */
        public static String RESULT_NOTIFY = "ContentCallback.ResultNotify";
    }

    interface CALL_FIELD {
        String CMD = "CallbackCommand";
        String GROUP_ID = "GroupId";
        String OPERATOR = "Operator_Account";
        String GROUP_OWNER = "Owner_Account";
        String GROUP_TYPE = "Type";
        String GROUP_NAME = "Name";
        String MEMBER_LIST = "MemberList";
    }

    public enum GroupRole {
        /** 普通成员 */
        Normal(0),
        /** 管理员 */
        Admin(1),
        /** 群主 */
        Master(2),
        ;
        public byte NUM;

        GroupRole(int num) {
            NUM = (byte) num;
        }
    }

    @Data
    /** 群消息类型 */
    public static class GROUP_MSG_TYPE {
        /** 好友工作群（Work）类似普通微信群，创建后仅支持已在群内的好友邀请加群，且无需被邀请方同意或群主审批，同旧版本中的 Private */
        public static String WORK = "Work";
        /** 陌生人社交群（Public）类似 QQ 群，创建后群主可以指定群管理员，用户搜索群 ID 发起加群申请后，需要群主或管理员审批通过才能入群 */
        public static String PUBLIC = "Public";
        /** 临时会议群（Meeting）创建后可以随意进出，且支持查看入群前消息；适合用于音视频会议场景、在线教育场景等与实时音视频产品结合的场景，同旧版本中的 ChatRoom */
        public static String MEETING = "Meeting";
        /** 直播群（AVChatRoom）创建后可以随意进出，没有群成员数量上限，但不支持历史消息存储；适合与直播产品结合，用于弹幕聊天场景 */
        public static String AV_CHAT_ROOM = "AVChatRoom";
        /** 社群（Community）创建后可以随意进出，默认支持10w人，可扩容至百万级，支持历史消息存储，用户搜索群 ID 发起加群申请后，无需管理员审批即可进群 */
        public static String COMMUNITY = "Community";
    }

    @Data
    /** 消息内容类型 */
    public static class MSG_TYPE {
        /** 文本 */
        public static String TEXT = "TIMTextElem";
        /** 地理位置 */
        public static String LOCATION = "TIMLocationElem";
        /** 表情 */
        public static String FACE = "TIMFaceElem";
        /** 自定义消息 */
        public static String CUSTOM = "TIMCustomElem";
        /** 语音 */
        public static String AUDIO = "TIMSoundElem";
        /** 图片 */
        public static String IMG = "TIMImageElem";
        /** 文件 */
        public static String FILE = "TIMFileElem";
        /** 视频 */
        public static String VIDEO = "TIMVideoFileElem";
        /** 合并转发 */
        public static String RELAY = "TIMRelayElem";
    }

    /** 腾讯云返回字段 */
    public static class RES_FIELD {
        public static String CODE = "ErrorCode";
        public static String STA = "ActionStatus";
        public static String MSG = "ErrorInfo";
    }
}
